package dao;

import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import model.ComandaCabecalho;
import model.ComandaDetalhe;
import model.GenericoDAO;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import util.HibernateUtil;

/**
 *
 * @author Silvanei S
 */
public class ComandaCabecalhoDAO extends GenericoDAO{
    
    public ComandaCabecalho getByComanda(String comanda, String documento){
        Session s = HibernateUtil.getSessionFactory().openSession();
        ComandaCabecalho comandaCabecalho = null;
        try {
            
            Criteria crit = s.createCriteria(ComandaCabecalho.class);
            
            Criterion rest1= Restrictions.eq("codigoBarras", comanda);
            Criterion rest2= Restrictions.eq("c.documento", documento);
            crit.createAlias("cliente", "c")
                .add(Restrictions.or(rest1, rest2))
                .addOrder(Order.desc("id"));
            
            //crit.add(Restrictions.eq("codigoBarras", comanda));
            comandaCabecalho = (ComandaCabecalho) crit.list().get(0);

        } catch (Exception e) {
            //JOptionPane.showMessageDialog(null, "getByComanda "+e.getMessage());
        } finally {           
            s.close();
        }

        return comandaCabecalho;
    }
    
    public List<ComandaDetalhe> getDetalhes(ComandaCabecalho comandaCabecalho){
        Session s = HibernateUtil.getSessionFactory().openSession();
        List<ComandaDetalhe> detalhes = new ArrayList<>();
        try {
            // verifico se teve Movimento para o caixa
            Criteria crit = s.createCriteria(ComandaDetalhe.class);
            crit.add(Restrictions.eq("id.comandaCabecalho", comandaCabecalho));
            detalhes = crit.list();

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "getDetalhes "+e.getMessage());
        } finally {           
            s.close();
        }

        return detalhes;
    }
    
}
